import 'package:flutter/material.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';

class Ceso extends StatefulWidget {
  const Ceso({super.key});

  @override
  State<Ceso> createState() => _CesoState();
}

class _CesoState extends State<Ceso> {
  // 列表数据
  final List<String> _listData = [];
  // 刷新控制器
  final RefreshController _refreshController =
      RefreshController(initialRefresh: false);
  // 当前页码
  int _page = 1;
  // 每页数量
  final int _pageSize = 8;

  @override
  void initState() {
    super.initState();
    // 初始化加载第一页数据
    _loadInitialData();
  }

  // 初始化数据
  void _loadInitialData() {
    for (int i = 0; i < _pageSize; i++) {
      _listData.add('初始数据 ${i + 1}');
    }
  }

  // 下拉刷新
  void _onRefresh() async {
    // 模拟网络请求延迟
    await Future.delayed(const Duration(milliseconds: 1000));

    setState(() {
      // 重置数据
      _page = 1;
      _listData.clear();
      for (int i = 0; i < _pageSize; i++) {
        _listData.add('刷新后的数据 ${i + 1}');
      }
    });

    // 完成刷新
    _refreshController.refreshCompleted();
  }

  // 上拉加载
  void _onLoading() async {
    // 模拟网络请求延迟
    await Future.delayed(const Duration(milliseconds: 1000));

    setState(() {
      _page++;
      // 加载更多数据
      final int start = (_page - 1) * _pageSize;
      final int end = _page * _pageSize;

      for (int i = start; i < end; i++) {
        _listData.add('第 $_page 页数据 ${i - start + 1}');
      }

      // 模拟数据到底（最多加载5页）
      if (_page >= 5) {
        _refreshController.loadNoData();
        return;
      }
    });

    // 完成加载
    _refreshController.loadComplete();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('刷新示例'),
      ),
      body: SmartRefresher(
        // 启用下拉刷新
        enablePullDown: true,
        // 启用上拉加载
        enablePullUp: true,
        // 刷新控制器
        controller: _refreshController,
        // 下拉刷新回调
        onRefresh: _onRefresh,
        // 上拉加载回调
        onLoading: _onLoading,
        // 下拉头部样式
        header: const WaterDropHeader(),
        // 上拉底部样式
        footer: const ClassicFooter(
          loadingText: "加载中...",
          canLoadingText: "释放加载更多",
          noDataText: "没有更多数据了",
        ),
        // 列表内容
        child: ListView.builder(
          itemCount: _listData.length,
          itemBuilder: (context, index) {
            return Card(
              margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
              child: Padding(
                padding: const EdgeInsets.all(16),
                child: Text(
                  _listData[index],
                  style: const TextStyle(fontSize: 16),
                ),
              ),
            );
          },
        ),
      ),
    );
  }

  @override
  void dispose() {
    // 释放控制器资源
    _refreshController.dispose();
    super.dispose();
  }
}
